1 简单流程控制语句
本节学习目标
- 了解 3种if语句和case的格式
- 掌握 双分支if语句和case语句的应用
- 掌握 3种循环语句的格式和应用
1.1 单分支if语句
语法格式
if [ 条件 ] then 指令 fi
场景:单一条件,只有一个输出
- 单分支if语句示例
#!/bin/bash
# 单if语句的使用场景
if [ "$1" == "nan" ]
then
echo "您的性别是 男"
fi
1.2 双分支if语句
- 语法格式
if [ 条件 ]
then
指令1
else
指令2
fi
- 场景:一个条件,两种结果
- 双分支if语句示例
#!/bin/bash
# 单if语句的使用场景
if [ "$1" == "nan" ]
then
echo "您的性别是 男"
else
echo "您的性别是 女"
fi
1.3 多分支if语句
- 语法格式
if [ 条件 ]
then
指令1
elif [ 条件2 ]
then
指令2
else
指令3
fi
- 场景:n个条件,n+1个结果
多分支if语句示例
#!/bin/bash
# 单if语句的使用场景
if [ "$1" == "nan" ]
then
echo "您的性别是 男"
elif [ "$1" == "nv" ]
then
echo "您的性别是 女"
else
echo "您的性别,我不知道"
fi
- 多if语句生产场景: 服务的启动
1.3 要求脚本执行需要有参数,通过传入参数来实现不同的功能
- 参数和功能详情如下:
参数 | 执行效果 |
---|---|
start | 服务器启动中... |
stop | 服务器关闭中... |
restart | 服务器重启中... |
脚本 X.sh 使用方式 X.sh [ start|stop|restart ]
脚本内容
admin-1@ubuntu:/data/scripts/python-n# cat if.sh
#!/bin/bash
# 多if语句的使用场景
if [ "$1" == "start" ]
then
echo "服务启动中..."
elif [ "$1" == "stop" ]
then
echo "服务关闭中..."
elif [ "$1" == "restart" ]
then
echo "服务重启中..."
else
echo "$0 脚本的使用方式: $0 [ start | stop | restart ]"
fi
1.4 case选择语句
我们发现多if语句使用的时候,代码量很多,而且整体看起来确实有那么一丁点乱,有没有办法更好的实现这种效果呢?就是Case语句。
- case语句格式
case 变量名 in
值1)
指令1
;;
...
值n)
指令n
;;
esac
注意:首行关键字是case,末行关键字esac选择项后面都有 )每个选择的执行语句结尾都有两个分号;
case**语句示例**
场景:在多if语句的基础上对脚本进行升级
需求:
要求脚本执行需要有参数,通过传入参数来实现不同的功能。
参数和功能详情如下:
参数 执行效果
start 服务启动中...
stop 服务关闭中...
restart 服务重启中...
* 脚本 X.sh 使用方式 X.sh [ start|stop|restart ]
- 脚本内容:
# cat case.sh
#!/bin/bash
# case语句使用场景
case "$1" in
"start")
echo "服务启动中..."
;;
"stop")
echo "服务关闭中..."
;;
"restart")
echo "服务重启中..."
;;
*)
echo "$0 脚本的使用方式: $0 [ start | stop | restart ]"
;;
esac
1.5 for循环语句
循环指定的所有元素,循环完毕之后就推出
- 语法格式
for 值 in 列表
do
执行语句
done
注意:”for” 循环总是接收 “in” 语句之后的某种类型的字列表,执行次数和list列表中常数或字符串的个数相同,当循环的数量足够了,就自动退出
- 示例:遍历文件
#!/bin/bash
# for语句的使用示例
for i in $(ls /root)
do
echo "${i}"
done
1.6 while循环语句
- 语法格式
while 条件
do
执行语句
done
注意:条件的类型:命令、[[ 字符串表达式 ]]、(( 数字表达式 )) 注意:continue用来跳过循环,break用于退出循环
- while语句示例
- 脚本内容
#!/bin/bash
# while的示例
a=1
while [ "${a}" -lt 5 ]
do
echo "${a}"
a=$((a+1))
done
#!/bin/bash
# while的示例
a=1
while true
do
echo "${a}"
if $a
then
break
fi
done
1.7 until循环语句
- 语法格式
until 条件
do
执行语句
done
注意:条件的类型:命令、[[ 字符串表达式 ]]、(( 数字表达式 ))
- until语句示例
#!/bin/bash
# until的示例
a=1
until [ "${a}" -eq 5 ]
do
echo "${a}"
a=$((a+1))
done